#ifndef _CPP_STORY_OUTPUT_H_
#define _CPP_STORY_OUTPUT_H_

#include "result.h"
#ifdef WIN32
#include "cppstory_win32.h"
#endif

namespace CppStory
{

class Background;
class Feature;
class Scenario;
class Step;
class StepDefinition;

#ifdef WIN32
class CPPSTORY_WIN32_API Output
#else
class Output
#endif
{
public:
    virtual ~Output() {}
    virtual void output_feature(Feature* feature) = 0;
    virtual void output_background(Background* background) = 0;
    virtual void output_scenario(Scenario* scenario) = 0;
    virtual void output_step(Step* step, StepDefinition* step_def, RESULT_TYPE result) = 0;

    virtual void output_ambiguous_step(Step* step, StepDefinition* first, StepDefinition* second) = 0;

    virtual void output_feature_summary(int total, int failed_count) = 0;
    virtual void output_scenario_summary(int total, int failed_count) = 0;
};

}

#endif

